사진을 보고 그 사진을 해설하는 모델. 그 모델의 입력이 있을 때 Edge를 먼저 보는구나! 그렇다면 컨볼루션 마스크를 씌워 에지를 보자꾸나.
필터를 학습하는 딥러닝 모델임. 컨볼루션(합성곱) 필터란, 이미지로부터 단순한 형태를 추출할 수 있는 필터(예를 들면 에지검출)를 사용하는 것을 의미한다.
locality: 모든 신호는 인접한 신호와 비슷할 확률이 높다는 전제 하에 진행하고, 신호의 변화량이 크다면 그것은 유의미한 정보라고 볼 수 있다.
Convolution, Max Pooling 차이가 무엇인가요?
Max Pooling: maximum 신호만 가져온다, 가중치 합도 아니고 사진 데이터가 여러 방향,사이즈,으로 치우쳐 있는 경우에도 fault tolerance 하도록
translation invariance: 위치가 달라도 동일한 시그널
rotation/viewpoint invariance: 보는 방향이 달라도 동일한 시그널이어야 한다.
illumination invariance: 광원이 달라도 동일한 시그널이어야 한다.
Auto Incoder
IT (Information Technology) 정보의 표현은 직관적이고 쉽다. 왜 대부분의 사진은 BMP로 유통될까? => 압축이 안 되어 있어서. 메시지를 어떻게 표현하느냐를 다루는 도메인이다. 모든데이터는 언제나 raw한 포맷으로 시작된다. 하지만 우리 목적에 맞게 얘를 변환하는데, 사이즈를 줄인다거나 에러가 끼거나 훼손되어도 복원가능하기 위해 인코딩이라는 작업을 진행한다.
encoder: code를 만드는 놈이다. eg, jpeg/png encoder
WHY 압축? ==> 정보의 양을 줄일 수 있어서.
예전엔 구리선을 순수하게 만드는 방법이었지만 요새는 에러를 끼고도 안전하게 정보를 전송할 수 있게 만드는 저시기가 있다.
decoder: code로부터 해체하는 놈이다.
Deep Learning도 IT이다. Encoding, Decoding이다. 에러와 잡음을 줄이고 사람의 직관과 똑같게 만들어주자.
원본을 인코딩 하여 디코딩 했을 때의 loss 비율을 가지고 스스로 학습.
denoising autoencoder = 원본에 임의로 노이즈를 준다. 그 상태로 인코딩을 한다. 그리고 이것을 디코딩 했을 때 노이즈 없는 결과를 볼 수 있게된다.
텍스트로 이미지 만들기 dall-e는 유료이고 닫힌소스인데 이 기술과 동일한 걸 만든 latent-diffusion을 바탕으로 stable-diffusion을 만들어 오픈소스로 뿌려버렸다. 사용자들이 자기네 모델을 만들어 배포하기 시작했고, 그것을 가지고 스스로 fine-tuning을 하게 됐는데, 그것을 서비스하는 업체가 바로 https://civitai.com
fine-tuning 하는 과정을 LoRA라고 하는 transformer 기반 언어모델을 가지고 진행할 수 있다.
source image를 가지고 에지검출, 에지와 글로 쓴 프롬프트를 가지고 아예 새로운 그림을 생성할 수 있다.
어떻게 원본사진과 텍스트만 가지고 새로운 사진을 만들어낼 수 있던 걸까? ===> Multi Model, 서로 연관성 없어 보이는 두 모델이 동시에!
CLIP (Contrastive Language-Image Pre-Training대조적 언어-이미지 사전 교육)
텍스트 인코더 & 이미지 인코더를 동시에 사용, 수많은 텍스트와 이미지로부터 벡터를 만들어 그냥 내적(가중치합)을 수행하면 일종의 유사도를 뽑아낼 수 있다. 두 벡터가 수직이면 0이 나오는 것 정도는 알잖아?
5개의 텍스트, 5개의 이미지를 인코딩한 벡터들을 행렬 모양으로 곱셈하면 좌표평면에서의 같은 공간으로 몰아버릴 수 있게된다. ==> 분류기를 만드는 데 쓸 수 있겠다.
stable-diffusion같은 애들이 CLIP을 엔진으로 가져올 수 있다. ==> 분류기? 그거론 부족해. 우린 생성까지 한다.